           ;COPYRIGHT AUG,DEC 1981 BY KIN-PING KWOK
           ;         ALL RIGHT RESERVED
           ;      XREF LISTER V1.1 FOR RAE
           .BA $2800
           .OS
TXST       .DE $100
STST       .DE $104
PBUF       .DE $90
TEXT       .DE $94
BYF        .DE $9B
CTF        .DE $96
LBLFL      .DE $97
LBLCT      .DE $98
USER       .DE $9A
FILECT     .DE $9C
LBLPTR     .DE $92
ERMSG      .DE $8171
L/L        .DE $6
START      .DE $90
CURPTR     .DE $94
TPTR       .DE $96
STORE      .DE $98
TXEN       .DE $102
TPRES      .DE $D3
PLAB       .DE $92
SLAB       .DE $94
LABADDR    .DE $96
MEMPTR     .DE $98
LABCT      .DE $9A
LEN        .DE $9D
FLAG       .DE $9F
LINCT      .DE $9C
TEMP       .DE $9E
NIBASC     .DE $8309
RAENOMSG   .DE $B146
TSTART     .DE $124
TEND       .DE $126
HSTART     .DE $129
HEND       .DE $12B
U/LOAD     .DE $EF5D
ROUTCHR    .DE $E3A4
MINCHR     .DE $8A1B
RCRLF      .DE $E3CA
TAPEON1    .DE $E32A
TAPEOF1    .DE $E318
!!!MOVE    .MD ( P1 P2 )
           IFP P1-$FF
           LDA P1+1
           ***
           IFM P1-$FF
           LDA *P1+1
           ***
           IFP P2-$FF
           STA P2+1
           ***
           IFM P2-$FF
           STA *P2+1
           ***
           IFP P1-$100
           LDA P1
           ***
           IFM P1-$100
           LDA *P1
           ***
           IFP P2-$100
           STA P2
           ***
           IFM P2-$100
           STA *P2
           ***
           .ME
XREF
SORT.NOFI  LDA #$40
           .BY $2C
SORT.FILE  LDA #$00
           .BY $2C
           LDA #$40
           .BY $2C
           LDA #$00
           STA *FLAG
           JMP ASKIP
           JMP (VEC)
ASKIP      ASL A
           BCS TOMST
           JSR SORT
TOMST      JMP MSTART
CONTAP     JSR CONT.TAPE
           MOVE (TSTART TEXT)
           INC *FILECT
           BNE MSTART1
ERREE      LDA *CTF
           BNE CONTAP
           LDA #$EE
ERR        SEC
           JSR ERMSG
           JMP RAENOMSG
MEND       LDA #$00
           LDY #3
MEND1      STA (PBUF),Y
           DEY
           BPL MEND1
           JMP BMOVE
MSTART     LDA TXST
           STA *TEXT
           STA *PBUF
           LDA TXST+1
           STA *TEXT+1
           STA *PBUF+1
           LDA #0
           STA *FILECT
MSTART1    LDX #0
           STX *CTF
           JSR CHECK
MSTART2    CLV
           LDY #2
           STY *BYF
           JSR CHR
           CMP #0
           BEQ ERREE
           CMP #';
           BEQ BNXT
           CMP #'!
           BNE MAIN1
           LDX #$80
           STX *BYF
           BNE MAIN1.5
MAIN1      CMP #'@
           BCC MAIN2
MAIN1.5    JSR LABELD
MAIN2      JSR NXTFLD
           CMP #'.
           BEQ CKPO
           JSR LABELM
           JMP MAIN3
CKPO       JSR NXTCHR
           BVS B2NXT
           LDX #2
CKFU1      CMP PSE1,X
           BEQ CKFU2
           DEX
           BPL CKFU1
           BMI MAIN3
CKFU2      JSR NXTCHR
           CMP PSE2,X
           BNE MAIN3
           CPX #2
           BNE CKEN
           LDX #$80
           STX *BYF
           BNE MAIN3
CKEN       CPX #1
           BEQ FDCT
           JMP MEND 
FDCT       STX *CTF
           JMP NXTLN
MAIN3      JSR NXTFLD
           LDX *BYF
           BMI MAIN5
           CMP #'A
           BNE MAIN4
           BVS NXTLN
           JSR NXTCHR
           CMP #$20
           BEQ NXTLN
           DEY
           LDA #'A
           CLV
MAIN4      CMP #'#
           BNE MAIN5
           JSR NXTCHR
           CMP #''
BNXT       BEQ NXTLN
           BVS MAIN5
           JSR NXTCHR
           CMP #',
           BEQ DONXT
           DEY
           DEY
           CLV
DONXT      JSR NXTCHR
MAIN5      CMP #'@
           BCS MAIN6
B2NXT      BVS NXTLN
           CMP #'$
           BEQ SKIP1
           CMP #'.
           BEQ SKIP1
           CMP #'%
           BNE CMPCP
SKIP1      JSR NXTCHR
           CMP #'.
           BCS SKIP1
           BCC DONXT
CMPCP      CMP #')
           BEQ NXTLN
           CMP #'(
           BNE CMPCOMA
           LDA #$80
           STA *BYF
           BNE DONXT
CMPCOMA    CMP #',
           BEQ NXTLN
           CMP #''
           BNE CMPBLK
           LDX *BYF
           BPL NXTLN
SKIP2      JSR NXTCHR
           CMP #''
           BNE SKIP2
           BEQ CONT
CMPBLK     CMP #$20
           BNE DONXT
           BIT *BYF
           BPL NXTLN
CONT       JSR NXTFLD
           JMP MAIN5
MAIN6      JSR LABELU
           JMP DONXT
NXTLN      LDX #$FF
           TXS
           DEY
NXTL1      INY
           LDA (TEXT),Y
           BPL NXTL1
           SEC
           TYA
           ADC *TEXT
           STA *TEXT
           BCC NXTL2
           INC *TEXT+1
NXTL2      JMP MSTART2
NXTCHR     BVS NXTLN
           INY
CHR        LDA (TEXT),Y
           BPL CHR1
           AND #$7F
CHR3       BIT CHR4
CHR4       RTS
CHR1       PHA
           INY
           LDA (TEXT),Y
           DEY
           AND #$7F
           CMP #';
           BNE CHR2
           BIT CHR4
CHR2       PLA
           RTS
NXTFLD     JSR CHR
           CMP #$20
           BEQ NCLN2
NCLN1      JSR NXTCHR
           CMP #$20
           BNE NCLN1
NCLN2      JSR NXTCHR
           CMP #$20
           BEQ NCLN2
           RTS
ERRIL      LDA #$11
           JMP ERR
LABELD     LDX #$0
           BEQ LABELS
LABELU     LDX #$20
           BNE LABELS
LABELM     LDX #$A0
LABELS     STX LBLFL
LABEL      LDX #0
           STX *LBLCT
           STX *LBLCT+1
           STA LBLBU,X
           CMP #'!
           BNE LABEL0
           BVS ERRIL
           INY
           JSR NXTCHR
           BVS ERRIL
           JSR NXTCHR
           CMP #'@
           BCC ERRIL
           INX
           INX
           INX
           STA LBLBU,X
LABEL0     BVS LBLEND
LABEL1     JSR NXTCHR
           CMP #'.
           BCC LBLEND
           INX
           STA LBLBU,X
           BVC LABEL1
LBLEND     PHP
           DEY
           LDA LBLBU,X
           ORA #$80
           STA LBLBU,X
           STX *LEN
           CLC
           LDA STST
           ADC #2
           STA *LBLPTR
           LDA STST+1
           ADC #0
           STA *LBLPTR+1
           STY *USER
LLOOPN     LDY #0
           LDA (LBLPTR),Y
           BNE LCKMAC
           BIT *LBLFL
           BMI FOUND2
           JMP GR3
LCKMAC     BIT *LBLFL
           BPL LCKEXT
           CMP #'!
           BNE FOUND2
           LDA *LBLPTR
           ADC #2
           STA *LBLPTR
           BCC LLOOP0
           INC *LBLPTR+1
           BNE LLOOP0
LCKEXT     STY *TEMP
           CMP #'/
           BNE LLOOP0
           STA *TEMP
           INC *LBLPTR
           BNE LLOOP0
           INC *LBLPTR+1
LLOOP0     INC *LBLCT
           BNE LLOOP1
           INC *LBLCT+1
LLOOP1     LDA (LBLPTR),Y
           CMP LBLBU,Y
           BNE LNXT
           CMP #'!
           BNE LLOOP2
           DEX
           DEX
           INY
           INY
           BNE LLOOP2
LLOOP      LDA (LBLPTR),Y
           CMP LBLBU,Y
           BNE LNXT
LLOOP2     INY
           DEX
           BPL LLOOP
           LDY #0
           LDA *LBLCT+1
           LDX #6
FOUND      ASL *LBLCT
           ROL A
           DEX
           BNE FOUND
           STA (PBUF),Y
           INY
           LDA *FILECT
           AND #$1F
           ORA *LBLFL
           AND #$3F
           ORA *LBLCT
           STA (PBUF),Y
           LDA (TEXT),Y
           INY
           STA (PBUF),Y
           LDA (TEXT,X)
           INY
           STA (PBUF),Y
           TYA
           SEC
           ADC *PBUF
           STA *PBUF
           BCC FOUND1
           INC *PBUF+1
FOUND1     JSR CHECK
FOUND2     LDY *USER
           PLP
           RTS
LNXT       BCC LNXT3
           BIT *LBLFL
           BMI FOUND2
           ASL A
           BCS LNXT3
           LDA *TEMP
           BEQ GR3
LNXT3      LDX *LEN
           LDY #$FF
LNXT1      INY
           LDA (LBLPTR),Y
           BPL LNXT1
           INY
           INY
           TYA
           SEC
           ADC *LBLPTR
           STA *LBLPTR
           BCC LNXT2
           INC *LBLPTR+1
LNXT2      JMP LLOOPN
CHECK      LDA *TEXT
           CMP *PBUF
           LDA *TEXT+1
           SBC *PBUF+1
           BCS GR1
GR2        LDA #$0F
           .BY $2C
GR3        LDA #$0D
           SEC
           JMP ERR
GR1        RTS
BMOVE      LDA TXEN
           STA *LBLPTR
           LDA TXEN+1
           STA *LBLPTR+1
           CLC
           LDA #3
           ADC *START
           STA *START
           LDY #0
           TYA
           ADC *START+1
           STA *START+1
BM1        LDA (START),Y
           STA (LBLPTR),Y
           LDA *START
           BNE BM2
           DEC *START+1
BM2        DEC *START
           LDA *LBLPTR
           BNE BM3
           DEC *LBLPTR+1
BM3        DEC *LBLPTR
           LDA *START
           CMP TXST
           BNE BM1
           LDA *START+1
           CMP TXST+1
           BNE BM1
           LDA (START),Y
           STA (LBLPTR),Y
           MOVE (LBLPTR START)
           JMP SSTART
SEND       JMP ESTART
SSTART     MOVE ( START LBLPTR )
S0         LDA *LBLPTR
           CLC
           ADC #4
           STA *LBLPTR
           BCC S1
           INC *LBLPTR+1
S1         LDY #0
           LDA (LBLPTR),Y
           BNE S2
           INY
           LDA (LBLPTR),Y
           BEQ SEND
S2         MOVE ( LBLPTR CURPTR )
S2.5       LDA *CURPTR
           CMP *START
           BNE S3
           LDY *CURPTR+1
           CPY *START+1
           BEQ S20
S3         SEC
           SBC #4
           STA *CURPTR
           BCS S4
           DEC *CURPTR+1
S4         LDY #0
S5         LDA (LBLPTR),Y
           CMP (CURPTR),Y
           BEQ S6
           BCS S10
           BCC S2.5
S6         INY
           CPY #4
           BCC S5
S10        LDA *CURPTR
           CLC
           ADC #4
           STA *CURPTR
           BCC S11
           INC *CURPTR+1
S11        LDA *LBLPTR
           CMP *CURPTR
           BNE S20
           LDA *LBLPTR+1
           CMP *CURPTR+1
           BEQ S0
S20        LDY #3
S21        LDA (LBLPTR),Y
           STA STORE,Y
           DEY
           BPL S21
           MOVE ( LBLPTR TPTR )
S21.5      LDA *LBLPTR
           CMP *CURPTR
           BNE S22
           LDA *LBLPTR+1
           CMP *CURPTR+1
           BEQ S25
S22        LDA *LBLPTR
           BNE S23
           DEC *LBLPTR+1
S23        DEC *LBLPTR
S24        LDY #0
           LDA (LBLPTR),Y
           LDY #4
           STA (LBLPTR),Y
           BNE S21.5
S25        LDY #3
S26        LDA STORE,Y
           STA (LBLPTR),Y
           DEY
           BPL S26
           MOVE ( TPTR LBLPTR )
           JMP S0
END        JSR END.LIN
           LDA *START
           CLC
           ADC #3
           STA *START
           BCC ENDJMP
           INC *START+1
ENDJMP     JSR CM2
           JMP RAENOMSG
ESTART     LDA TXST+1
           STA *MEMPTR+1
           LDA TXST
           STA *MEMPTR
           LDY #MSGEND-MSG-1
WRTMSG     LDA MSG,Y
           STA (MEMPTR),Y
           DEY
           BPL WRTMSG
           INY
           LDA #MSGEND-MSG-1
           CLC
           ADC *MEMPTR
           STA *MEMPTR
           BCC WRMSG1
           INC *MEMPTR+1
WRMSG1     STY *LINCT+1
           INY
           STY *PLAB
           LDY #$10
           STY *LINCT
           LDY #$80
           STY *PLAB+1
           LDY #L/L
           STY *LABCT
           LDA STST
           STA *LABADDR
           LDA STST+1
           STA *LABADDR+1
MO.LBLCO   LDY #0
           LDA (START),Y
           STA *SLAB+1
           INY
           .CT XRFB.RAE 0
